Package bg.smoc.web.servlet.judge.contest

Source Code of bg.smoc.web.servlet.judge.contest.DownloadTestDataServlet

package bg.smoc.web.servlet.judge.contest;

import java.io.File;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import bg.smoc.model.Task;
import bg.smoc.model.manager.ContestManager;
import bg.smoc.model.serializer.FileInfo;
import bg.smoc.web.utils.FileUtils;
import bg.smoc.web.utils.SessionUtil;

public class DownloadTestDataServlet extends HttpServlet {

    /**
     *
     */
    private static final long serialVersionUID = -836352779255986453L;

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // http://localhost:8080/judge/downloadTest?contestId=Contest_0&taskId=Contest_0_0&testNum=1&type=SOL
        String contestId = request.getParameter("contestId");
        String taskId = request.getParameter("taskId");
        String testNum = request.getParameter("testNum");
        String testType = request.getParameter("type");
        ContestManager contestManager = SessionUtil.getInstance().getContestManager();
        Task task = contestManager.getTask(contestId, taskId);
        if (task == null || testType == null || testNum == null) {
            response.sendRedirect("");
            return;
        }
        int testNumber = -1;
        try {
            testNumber = Integer.parseInt(testNum);
        } catch (NumberFormatException e) {
            response.sendRedirect("");
            return;
        }
        Task.TestType type;
        try {
            type = Task.TestType.valueOf(testType);
        } catch (IllegalArgumentException e) {
            response.sendRedirect("");
            return;
        }
        FileInfo fileInfo = contestManager.getTestDataFile(contestId,
                task.getName(),
                testNumber,
                type);
        if (fileInfo == null || fileInfo.getSize() > Integer.MAX_VALUE) {
            response.sendRedirect("");
            return;
        }

        response.setContentType("plain/text");
        response.setContentLength((int) fileInfo.getSize());
        response.setHeader("Content-Disposition", "attachment; filename=\""
                + new File(fileInfo.getAbsolutePath()).getName()
                + "\"");
       
        FileUtils.copyStreams(fileInfo.getInputStream(), response.getOutputStream());
        fileInfo.getInputStream().close();
    }
}
TOP

Related Classes of bg.smoc.web.servlet.judge.contest.DownloadTestDataServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.